<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 skin-theme-clientpref-day vector-sticky-header-enabled" lang="de" dir="ltr"><head>
<meta charset="UTF-8">
<title>Feature Driven Development</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://de.wikipedia.org/wiki/Feature_Driven_Development"> <link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link href="./_mw_/ext.gadget.citeRef.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.defaultPlainlinks.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonHide.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonLayout.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonStyle.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiDarkmode.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiResponsive.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.specialSearch.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Feature_Driven_Development rootpage-Feature_Driven_Development skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Feature Driven Development</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="de" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="de" dir="ltr"><p><b>Feature Driven Development</b> (Abk. FDD) ist eine Sammlung von Arbeitstechniken, Strukturen, Rollen und Methoden für das <a href="Projektmanagement" title="Projektmanagement">Projektmanagement</a> im Rahmen <a href="Agile_Softwareentwicklung" title="Agile Softwareentwicklung">agiler Softwareentwicklung</a>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Grundlagen">Grundlagen</h2></div>
<p>FDD wurde als schlanke Methode von Jeff De Luca im Jahre 1997 definiert, um ein großes zeitkritisches Projekt (15 Monate, 50 Entwickler) durchzuführen. Seitdem wurde FDD kontinuierlich weiterentwickelt.
FDD stellt den Feature-Begriff in den Mittelpunkt der Entwicklung. Jedes Feature stellt einen Mehrwert für den Kunden dar.
Die Entwicklung wird anhand eines Feature-Plans organisiert. Eine wichtige Rolle spielt der Chefarchitekt (engl. Chief Architect), der ständig den Überblick über die Gesamtarchitektur und die fachlichen Kernmodelle behält. Bei größeren Teams werden einzelne Entwicklerteams von Chefprogrammierern (engl. Chief Programmer) geführt.
</p><p>FDD definiert ein Prozess- und ein Rollenmodell, die gut mit existierenden klassischen Projektstrukturen harmonieren. Daher fällt es vielen Unternehmen leichter, FDD einzuführen als <a href="Extreme_Programming" title="Extreme Programming">XP</a> oder <a href="Scrum" title="Scrum">Scrum</a>. Außerdem ist FDD ganz im Sinne der agilen Methoden sehr kompakt. Es lässt sich auf 10 Seiten komplett beschreiben.
</p>
<div class="mw-heading mw-heading2"><h2 id="FDD-Prozessmodell">FDD-Prozessmodell</h2></div>
<p>FDD-Projekte durchlaufen fünf Prozesse.
</p>
<dl><dd>Prozess #1: Entwickle ein Gesamtmodell (Rollen: alle Projektbeteiligten)</dd>
<dd>Prozess #2: Erstelle eine Feature-Liste (Rollen: in der Regel nur die Chefprogrammierer)</dd>
<dd>Prozess #3: Planung je Feature (Rollen: Projektleiter, Entwicklungsleiter, Chefprogrammierer)</dd>
<dd>Prozess #4: Entwurf je Feature (Rollen: Chefprogrammierer, Entwickler)</dd>
<dd>Prozess #5: Programmierung je Feature (Rollen: Entwickler)</dd></dl>
<p><span class="mw-default-size" typeof="mw:File"></span>
</p><p>Die ersten drei Prozesse werden innerhalb weniger Tage durchlaufen. Die Prozesse 4 und 5 werden in ständigem Wechsel durchgeführt, weil jedes Feature in maximal zwei Wochen realisiert wird.
</p>
<div class="mw-heading mw-heading3"><h3 id="Prozess_#1:_Entwickle_ein_Gesamtmodell"><span id="Prozess_.231:_Entwickle_ein_Gesamtmodell"></span>Prozess #1: Entwickle ein Gesamtmodell</h3></div>
<p>Im ersten Prozess definieren Fachexperten und Entwickler unter Leitung des Chefarchitekten Inhalt und Umfang des zu entwickelnden Systems. In Kleingruppen werden Fachmodelle für die einzelnen Bereiche des Systems erstellt, die in der Gruppe vorgestellt, ggf. überarbeitet und schließlich integriert werden. Das Ziel dieser ersten Phase ist ein Konsens über Inhalt und Umfang des zu entwickelnden Systems sowie das fachliche Kernmodell.
</p>
<div class="mw-heading mw-heading3"><h3 id="Prozess_#2:_Erstelle_eine_Feature-Liste"><span id="Prozess_.232:_Erstelle_eine_Feature-Liste"></span>Prozess #2: Erstelle eine Feature-Liste</h3></div>
<p>Im zweiten Prozess detaillieren die Chefprogrammierer die im ersten Prozess festgelegten Systembereiche in Features. Dazu wird ein dreistufiges Schema verwendet: Fachgebiete (engl. Subject Areas) bestehen aus Geschäftstätigkeiten (engl. Business Activities), die durch Schritte (engl. Steps) ausgeführt werden. Die Schritte entsprechen den Features.
Die Features werden nach dem einfachen Schema <Aktion> <Ergebnis> <Objekt> aufgeschrieben, z. B. „Berechne Gesamtsumme der Verkäufe“. Ein Feature darf maximal zwei Wochen zu seiner Realisierung benötigen.
Das Ergebnis dieses zweiten Prozesses ist eine kategorisierte Feature-Liste, deren Kategorien auf oberster Ebene von den Fachexperten aus Prozess #1 stammen.
</p>
<div class="mw-heading mw-heading3"><h3 id="Prozess_#3:_Planung_je_Feature"><span id="Prozess_.233:_Planung_je_Feature"></span>Prozess #3: Planung je Feature</h3></div>
<p>Im dritten Prozess planen der Projektleiter, der Entwicklungsleiter und die Chefprogrammierer die Reihenfolge, in der Features realisiert werden sollen. Dabei richten sie sich nach den Abhängigkeiten zwischen den Features, der Auslastung der Programmierteams sowie der Komplexität der Features.
</p><p>Auf Basis des Plans werden die Fertigstellungstermine je Geschäftsaktivität festgelegt. Jede Geschäftsaktivität bekommt einen Chefprogrammierer als Besitzer zugeordnet. Außerdem werden für die bekannten Kernklassen Entwickler als Besitzer festgelegt (engl. Class Owner List).
</p>
<div class="mw-heading mw-heading3"><h3 id="Prozess_#4:_Entwurf_je_Feature"><span id="Prozess_.234:_Entwurf_je_Feature"></span>Prozess #4: Entwurf je Feature</h3></div>
<p>Im vierten Prozess weisen die Chefprogrammierer die anstehenden Features Entwicklerteams auf Basis des Klassenbesitztums zu. Die Entwicklerteams erstellen ein oder mehrere Sequenzdiagramme für die Features und die Chefprogrammierer verfeinern die Klassenmodelle auf Basis der Sequenzdiagramme. Die Entwickler schreiben dann erste Klassen- und Methodenrümpfe. Schließlich werden die erstellten Ergebnisse inspiziert. Bei fachlichen Unklarheiten können die Fachexperten hinzugezogen werden.
</p>
<div class="mw-heading mw-heading3"><h3 id="Prozess_#5:_Programmierung_je_Feature"><span id="Prozess_.235:_Programmierung_je_Feature"></span>Prozess #5: Programmierung je Feature</h3></div>
<p>Im fünften Prozess programmieren die Entwickler die im vierten Prozess vorbereiteten Features. Bei der Programmierung werden Komponententests und Code-Inspektionen zur Qualitätssicherung eingesetzt.
</p>
<div class="mw-heading mw-heading2"><h2 id="Literatur">Literatur</h2></div>
<ul><li>Peter Coad, Eric Lefebvre, Jeff De Luca: <i>Java modelling In Color With UML: Enterprise Components and Process</i> Prentice Hall International, 1999, ISBN 0-13-011510-X</li>
<li>Stephen R. Palmer, John M. Felsing: <i>A Practical Guide to the Feature-Driven Development</i> Prentice Hall International, 2002, ISBN 0-13-067615-2.</li>
<li>Henning Wolf, Stefan Roock, Martin Lippert: <i>eXtreme Programming</i> dpunkt, 2., überarb. u. erw. Aufl., 2005, ISBN 3-89864-339-5. Das Buch enthält auch eine kurze Beschreibung von FDD. Teile dieses Wikipedia-Eintrages basieren mit freundlicher Genehmigung des dpunkt-Verlages auf der Beschreibung im Buch.</li>
<li>Michael Hüttermann: <i>Agile Java-Entwicklung in der Praxis</i> O’Reilly, 2007, ISBN 3-89721-482-2. Das Buch enthält auch eine kurze Beschreibung von FDD.</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Weblinks">Weblinks</h2></div>
<ul><li><a rel="nofollow" class="external text" href="http://www.featuredrivendevelopment.com">Informationen und Diskussionen zu FDD (Stand: 2011)</a></li></ul></div><!--htdig_noindex--><div><div class="zim-footer">
Dieser Artikel wurde von <a class="external text" title="Zuletzt bearbeitet am 2023-07-25" href="https://de.wikipedia.org/wiki/?title=Feature_Driven_Development&oldid=235816236">Wikipedia</a> herausgegeben. Der Text ist unter <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.de">Creative Commons Attribution-Share Alike 4.0</a> verfügbar, sofern nicht anders angegeben. Für die Mediendateien können zusätzliche Bedingungen gelten.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>
</body></html>